package com.aspire.aimini.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * AI配置实体类
 *
 * @author wangguiyou
 * @date 2024-01-01
 * @description 存储AI服务配置信息的实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ai_configs")
public class AiConfig implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID(NULL为系统配置)
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 服务类型(image_recognition/text_generation/image_generation)
     */
    @TableField("service_type")
    private String serviceType;

    /**
     * 服务提供商
     */
    @TableField("provider")
    private String provider;

    /**
     * 模型名称
     */
    @TableField("model_name")
    private String modelName;

    /**
     * API密钥(加密存储)
     */
    @TableField("api_key")
    private String apiKey;

    /**
     * API密钥(加密存储)
     */
    @TableField("api_secret")
    private String apiSecret;

    /**
     * 接口地址
     */
    @TableField("endpoint_url")
    private String endpointUrl;

    /**
     * 配置参数(JSON格式)
     */
    @TableField("config_params")
    private String configParams;

    /**
     * 调用频率限制
     */
    @TableField("rate_limit")
    private Integer rateLimit;

    /**
     * 每日配额
     */
    @TableField("daily_quota")
    private Integer dailyQuota;

    /**
     * 今日已用
     */
    @TableField("used_today")
    private Integer usedToday;

    /**
     * 是否默认配置
     */
    @TableField("is_default")
    private Boolean isDefault;

    /**
     * 状态(0禁用/1启用)
     */
    @TableField("status")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedTime;
}